System and method for updating a dynamic domain name server

ABSTRACT

A system and method for synchronizing a dynamic domain name system (DDNS). Updated domain name information is received at a first datastore and sent to a second datastore. Updated domain name information is also received at the second datastore and sent to the first datastore. Either datastore determines whether the other datastore is available to receive the updated domain name information. If the receiving datastore is not available, the sending datastore waits until the receiving datastore is available. The first datastore is connected to a first master DNS server and the second datastore is connected to a second master DNS server. The first and second master servers share an IP address. When a request for domain name information is received at a router, the request is sent to a master DNS server selected from the first and second master DNS servers using the shared IP address. A master DNS server is selected to respond to the DNS request only if that master server is able to respond to the request. The requested domain name information is retrieved from the datastore connected to the selected DNS server and a response to the request for domain name information is generated.

BACKGROUND AND SUMMARY

Dynamic Domain Name System (DDNS) is a critical architectural component of network systems. A domain name system may be analogized as an electronic telephone book that uses domain names to find IP addresses (IP lookup) and IP addresses to find domain names (domain name lookup).

Berkeley Internet Name Domain (BIND) is the most commonly used DNS server on the Internet, especially on Unix-like systems, where it is a de facto standard. While BIND provides many useful features, it imposes a number of architectural limitations on the DNS systems that use it. For example, BIND does not support multiple masters in the same zone. A zone is an individual domain, subdomain, or portion of the domain name system administered by the same authority. Additionally, BIND does not permit a secondary DNS server to update a primary DNS server. Some of the consequences of these limitations are described below.

FIG. 1 illustrates a simplified flow of an IP lookup. The IP lookup utilizes a query-response exchange. DNS client 100 issues a query 105 for the IP address of “example.com” to DNS server 120. DNS server 120 sends a response 110 comprising the address “192.0.2.1.”

IP addresses are typically issued dynamically by a dynamic host configuration protocol (DHCP) server. The IP address is issued in the form of a “lease” that has a specified expiration time and date. FIG. 2 illustrates an exchange between a client and DHCP server. The DHCP client 230 broadcasts a DHCP discover message 200 that is received by DHCP server 240. DHCP server 240 replies with a DHCP offer 205 comprising an IP address. The DHCP client 230 responds with a DHCP request 210 accepting the DHCP offer 205 and the DHCP server 240 responds with a DHCP acknowledgement 215 comprising the IP address. At some point in time, the DHCP client 230 indicates that it is releasing the IP address by sending a DHCP release message 220. The DHCP client 230 is responsible for renewing the lease before the expiration date and time.

The domain name system can be updated dynamically by connecting a DNS server to a DHCP server. FIG. 3 illustrates the message flow of a dynamic domain name system in which the DHCP server 240 sends a DNS update message 305 to DDNS server 300 following the issuance on an IP address to a client (as indicated by the acknowledgement message 215 sent by the DHCP server 240 to the DHCP client 230). When the client releases the IP address, a DNS update message 310 is sent to the DDNS server.

Given the importance of the domain name system, the system is structured with multiple redundancies. FIG. 4 illustrates that the flow of updates is from a primary (or master) DNS server to a secondary DNS server in a dynamic DNS system implementing BIND. This flow is unidirectional. DHCP server 400 sends a DNS update message 415 to primary DNS server 405. Primary DNS server 405 sends a response 420 to DHCP server 400 and a DNS update message 425 to secondary DNS server 410. In this configuration, secondary DNS server 410 cannot receive a DNS update directly from DHCP server 400 and cannot update a primary DNS server.

FIG. 5 illustrates a consequence of this architecture. If the primary DNS server 505 is unreachable, the DNS update message 515 from DHCP server 500 will not be received by the primary DNS server 505. Thus, secondary DNS server 510 cannot be updated even though it is fully operable because communication from DHCP server 500 directly to secondary DNS server 510 is prohibited.

FIG. 6 illustrates a modified flow in which the DNS update is sent directly from the DHCP server to the secondary DDNS server. As illustrated, DHCP server 600 sends a DNS update message 615 to primary DNS server 605. However, because primary DNS server 605 is “down,” the DNS update message 615 is not received by primary DNS server 605. DHCP server 600 then sends a DNS update message 620 to secondary DNS server 610. Secondary DNS server 610 sends a response message 625 to DHCP server 600 acknowledging the update message 620. However, BIND does not support multiple masters for the same zone, and this flow is not supported by current DHCP servers that cooperate with a BIND server. Even if this functionality could be added, the domain name system does not support updating a master server from a secondary server. Providing the updating functionality to a secondary server would violate this rule. (See, RFC 2136—Dynamic Updates in the Domain Name System (DNS UPDATE) April 1997). Additionally, after primary DNS server 605 returns to an operational state, DHCP clients that send a lookup query to master server 1 for the domain name that was updated by DHCP server 600 would either receive a “not found” response or would receive outdated information.

A partial solution to this problem is to use BGP (border gateway protocol) and the anycast protocol. Anycast is a network addressing and routing scheme whereby data is routed to a “best” destination as viewed by the routing topology. The “best” destination is determined by BGP implementation. BGP is an inter-autonomous system routing protocol. Routes learned via BGP have associated properties that are used to select a route to a destination when multiple paths exist to that destination. These properties are referred to as BGP attributes.

In the anycast/BGP solution, all DNS servers have the same IP address. The DNS client utilizes an anycast IP address that directs the lookup request to a router. The router then directs the lookup request to an available DNS server based on the assigned BGP attributes. This allows a DNS client to use a single IP address to contact one of a number of available anycast DNS servers.

While the anycast/BGP solution solves many of the client-side problems associated with domain name systems, the solution is not suited for dynamic domain name systems. Anycast works well with short transaction times, but as transaction times increase so does the potential that a route may change during the transaction. For this reason, anycast cannot be reliably used to update multiple master servers in a dynamic DNS system.

What is needed is a dynamic DNS system in which multiple master servers are capable of processing updates from DHCP servers as long as at least one master server is online and in which when an offline server comes online it is automatically updated with the most current DNS information.

DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified message flow of an IP lookup.

FIG. 2 illustrates a message flow between a client and DHCP server.

FIG. 3 illustrates a message flow of a dynamic domain name system.

FIG. 4 illustrates a message flow of updates from a primary (or master) DDNS server to a secondary DDNS server.

FIG. 5 illustrates a consequence of the architecture illustrated in FIG. 4.

FIG. 6 illustrates a modified message flow in which the DNS update is sent directly from a DHCP server to a secondary DDNS server.

FIG. 7 illustrates the logical components of a multi-master dynamic domain name system according to an embodiment hereof.

FIG. 8 illustrates a replication flow of a multi-master dynamic domain name system according to an embodiment hereof.

DETAILED DESCRIPTION

FIG. 7 illustrates the logical components of a multi-master dynamic domain name system according to an embodiment hereto. In this embodiment, multiple master DNS servers 710 and 720 are assigned the same IP address. Master DNS server 710 comprises front end 710A and back end 710B. Master DNS server 1 710 is linked to datastore 1 730. Datastore 1 730 is linked to DHCP server 1 750. In an embodiment, the front end 710A is an instance of the BIND software. However, this is not meant as a limitation. The front end 710A may be any software that is capable of responding to domain name query messages.

Master DNS 2 server 720 comprises front end 720A and back end 720B. Master DNS server 2 720 is linked to datastore 2 740. Datastore 2 740 is linked to DHCP server 2 760. In an embodiment, the front end 720A is an instance of the BIND software. However, this is not meant as a limitation. The front end 720A may be any software that is capable of responding to domain name query messages.

DHCP server 1 750 is also linked to DHCP server 2 760.

Master DNS 1 server 710 communicates with monitor 710C. Monitor 710C monitors the availability of DNS 1 server 710 to receive and respond to DNS requests and reports this availability to router 770. While monitor 710C is illustrated as a distinct component of the multi-master dynamic domain name system illustrated in FIG. 7, this is not meant as a limitation. For example, the functions of monitor 710C may be physically located in either DNS 1 server 710 or router 770.

Master DNS 2 server 720 communicates with monitor 720C. Monitor 720C monitors the availability of DNS 1 server 720 to receive and respond to DNS requests and reports this availability to router 780. While monitor 720C is illustrated as a distinct component of the multi-master dynamic domain name system illustrated in FIG. 7, this is not meant as a limitation. For example, the functions of monitor 720C may be physically located in either DNS 1 server 720 or router 780.

In an embodiment, routers 770 and 780 are BGP routers. However, this is not meant as a limitation. Other routing protocols, such as, for example, open shortest path first (OSPF), may be used.

Router 770 reports the availability of a route to master DNS server 1 710 to router 706. In an embodiment, router 706 is a BGP router. However this is not meant as a limitation. Other routing protocols, such as for example, open shortest path first (OSPF), may be used.

Router 780 reports the availability of a route to master DNS server 2 720 to router 706. A DNS client 700 issues a DNS lookup request over network 704 to a specified shared IP address in the form of an “anycast” message. Router 706 determines which master DNS server is to receive the request and directs the request to the appropriate server via network 704. Route selection may be based on availability of a DNS server, network loading, and other criteria. For discussion purposes, it will be assumed that the request is directed to DNS server 710.

The request is received by “front end” 710A of DNS server 710. The query is processed and referred to the “back end” 710B of DNS server 710. Datastore 1 730 is searched for the network address associated with the domain name identified in the query. The domain name is returned to the front end 710A and sent to DNS client 700 via network 704.

DHCP server 1 750 provides dynamic IP address updates to datastore 1 730. DHCP server 2 760 provides dynamic IP address updates to datastore 2 740. In an embodiment, datastores 1 and 2 (730 and 740) are servers operating the lightweight directory application protocol (LDAP). However, this is not meant as a limitation. Other protocols that are capable of performing the functions assigned to datastores 1 and 2 (730 and 740) may be used.

Datastores 1 and 2 (730 and 740) are configured such that the updates received by one datastore are updated to the other. If a datastore is unreachable, the operating datastore holds the updates for the “down” datastore until it is back in service. Additionally, the router 706 “knows” the availability of master DNS servers 710 and 720 to receive DNS queries. Domain name requests from DNS client 700 will not be routed to a master DNS server that is not able to respond to the request.

FIG. 7 illustrates a simplified architecture of a multi-master dynamic domain name system. It is anticipated that numerous master DNS servers and datastores will be utilized to provide the functionality described herein. Additionally, while FIG. 7 illustrates the logical components of a multi-master dynamic domain name system, the illustration is not meant to be limiting. Functional elements may be consolidated into single devices or distributed across a number of devices. For example, a master DNS server and a datastore may be incorporated into a single computing device.

FIG. 8 illustrates a replication flow of a multi-master dynamic domain name system according to an embodiment. DHCP server 1 800 updates an IP address for a device (not illustrated). An LDAP add message 820 is sent from DHCP server 1 800 to datastore 1 805. Assuming that datastore 1 805 was reachable, datastore 1 805 then sends a replicate message 825 to datastore 2 810. The replicate message conveys the updated IP address issued by DHCP server 1 800 to a network device (not shown). If datastore 2 810 is unreachable, datastore 1 800 holds the DNS update information until such time as communications with datastore 2 810 are restored.

If datastore 1 805 was not reachable when DHCP server 1 800 sent the LDAP add message 820, then DHCP server 1 800 utilizes a failsafe connection (illustrated as a dotted line in FIG. 7) to send the LDAP add message 820A to datastore 2 810. Datastore 2 810 holds the DNS update information until such time as communications with datastore 1 805 are restored. At that time, datastore 2 810 sends a replicate message 825A to datastore 1 805 to convey the updated DNS information to datastore 1 805.

DHCP server 2 815 updates an IP address for a device (not illustrated). An LDAP add message 830 is sent from DHCP server 2 815 to datastore 2 810. Assuming that datastore 2 810 was reachable, datastore 2 810 then sends a replicate message 840 to datastore 1 805. The replicate message conveys the updated IP address issued by DHCP server 2 815 to a network device (not shown). If datastore 1 805 is unreachable, datastore 2 810 holds the DNS update information until such time as communications with datastore 1 805 are restored.

If datastore 2 810 was not reachable when DHCP server 2 815 sent the LDAP add message 830, then DHCP server 2 815 utilizes a failsafe connection (illustrated as a dotted line in FIG. 7) to send the LDAP add message 830A to datastore 1 805. Datastore 1805 holds the DNS update information until such time as communications with datastore 2 810 are restored. At that time, datastore 1 805 sends a replicate message 840A to datastore 2 810 to convey the updated DNS information to datastore 2 810.

It will be understood by those skilled in the art that the present invention may be, without limitation, embodied in other specific forms without departing from the scope of the invention disclosed and that the examples and embodiments described herein are in all respects illustrative and not restrictive. Those skilled in the art of the present invention will recognize that other embodiments using the concepts described herein are also possible. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an,” or “the,” is not to be construed as limiting the element to the singular. Moreover, a reference to a specific time, time interval, and instantiation of scripts or code segments is in all respects illustrative and not limiting. 

1. A synchronized dynamic domain name system (DNS) comprising: a first master DNS server connected to a first datastore, wherein the first datastore comprises domain name information; a second master DNS server connected to a second datastore, wherein the second datastore comprises the domain name information, and wherein the first and second DNS servers share an IP address; a network accessible to the first and second master DNS servers, wherein the network comprises routers comprising instructions for: receiving availability information relating the availability of the first and second master DNS to receive packets; routing packets to an available one of the first and second master DNS servers using a shared IP address based on the availability information; a first monitor connected to the first master DNS server and the network, wherein the first monitor comprises instructions for: determining whether the first master server is available to respond to a request for domain name information; and reporting the availability of the first master DNS server to the network routers; a second monitor connected to the second master DNS server and the network, wherein the second monitor comprises instructions for: determining whether the second master DNS server is available to respond to the request for domain name information; and reporting the availability of the second master DNS server to the network routers, and wherein the first datastore comprises instructions for: receiving first updated domain name information; and sending the first updated domain name information to the second datastore, wherein the second datastore further comprises instructions for: receiving second updated domain name information; and sending the second updated domain name information to the first datastore, wherein the first master DNS server further comprises: the shared IP address; instructions for receiving the request for domain name information; instructions for retrieving the requested domain name information from the first datastore; and instructions for generating a response to the request for domain name information, wherein the response comprises the requested domain name information, and wherein the second master DNS server comprises: the shared IP address; instructions for receiving the request for domain name information from the router; instructions for retrieving the requested domain name information from the second datastore; and instructions for generating a response to the request for domain name information, wherein the response comprises the requested domain name information.
 2. The synchronized dynamic DNS of claim 1, wherein the instructions the instructions for receiving the request for domain name information, the instructions for retrieving the requested domain name information, and the instructions for generating a response to the request for domain name information comprise an instance of a BIND software application.
 3. The synchronized dynamic DNS of claim 1, wherein the first and second datastores operate a LDAP protocol.
 4. The synchronized dynamic DNS of claim 1, wherein the first datastore further comprises instructions for: prior to sending the first updated domain name information to the second datastore, determining whether the second datastore is available to receive the first updated domain name information; if the second datastore is not available to receive the first updated domain name information, then waiting until the second datastore is available to receive it; and sending the first updated domain name information to the second datastore when the second datastore is available to receive it, and wherein the second datastore further comprises instructions for: prior to sending the second updated domain name information to the first datastore, determining whether the first datastore is available to receive the second updated domain name information; if the first datastore is not available to receive the second updated domain name information, then waiting until the first datastore is available to receive it; and sending the second updated domain name information to the first datastore when the first datastore is available to receive it.
 5. The synchronized dynamic DNS of claim 1 further comprising: a first DHCP server, wherein the first DHCP server comprises instructions for: creating the first updated domain name information; sending the first updated domain name information to the first datastore if the first datastore is available to receive it; and sending the first updated domain name information to the second datastore if the first datastore is not available to receive it.
 6. The synchronized dynamic DNS of claim 5, wherein the second datastore further comprises instructions for: if the second datastore receives the first updated domain name information from the first DHCP server, then determining when the first datastore is available to receive the first updated domain name information; and sending the first updated domain name information to the first datastore when the first datastore is available to receive it.
 7. The synchronized dynamic DNS of claim 1 further comprising: a second DHCP server, wherein the second DHCP server comprises instructions for: creating the second updated domain name information; sending the second updated domain name information to the second datastore if the second datastore is available to receive it; and sending the second updated domain name information to the first datastore if the second datastore is not available to receive it.
 8. The synchronized dynamic DNS of claim 7, wherein the first datastore further comprises instructions for: if the first datastore receives the second updated domain name information from the second DHCP server, then determining when the second datastore is available to receive the second updated domain name information; and sending the second updated domain name information to the second datastore when the second datastore is available to receive it.
 9. The synchronized dynamic DNS of claim 1, wherein the request for domain name information is sent from a DNS client connected to the network, wherein the first master DNS server further comprises instructions for sending the response to the DNS client, and wherein the second master DNS server further comprises instructions for sending the response to the DNS client.
 10. A method for synchronizing a dynamic domain name system (DNS) comprising: receiving first updated domain name information at a first datastore; sending the first updated domain name information from the first datastore to a second datastore; receiving second updated domain name information at the second datastore; sending the second updated domain name information from the second datastore to the first datastore; receiving packets comprising a request for domain name information at a network router; determining whether at least one of first and second master servers are available to respond to the request for domain name information, wherein the first and second master servers share an IP address, wherein the first master DNS server is connected to a first datastore, and wherein the second master DNS server is connected to a second datastore; routing the packets comprising the request for domain name information to a master DNS server selected from an available one of the first and second master DNS servers using the shared IP address; retrieving the requested domain name information from the datastore connected to the selected master DNS server; and at the selected master DNS server, generating a response to the request for domain name information, wherein the response comprises the requested domain name information.
 11. The method for synchronizing a dynamic DNS of claim 10, wherein receiving the request for domain name information, retrieving the requested domain name information, and generating a response to the request for domain name information is performed by an instance of a BIND software application.
 12. The method for synchronizing a dynamic of claim 10, wherein the first and second datastores operate a LDAP protocol.
 13. The method for synchronizing a dynamic DNS of claim 10 further comprising: prior to sending the first updated domain name information to the second datastore, determining whether the second datastore is available to receive the first updated domain name information; if the second datastore is not available to receive the first updated domain name information, then waiting until the second datastore is available to receive it; sending the first updated domain name information to the second datastore when the second datastore is available to receive it. prior to sending the second updated domain name information to the first datastore, determining whether the first datastore is available to receive the second updated domain name information; if the first datastore is not available to receive the second updated domain name information, then waiting until the first datastore is available to receive it; and sending the second updated domain name information to the first datastore when the first data store is available to receive it.
 14. The method for synchronizing a dynamic DNS of claim 10 further comprising: at a first DHCP server, creating the first updated domain name information; sending the first updated domain name information to the first datastore if the first datastore is available to receive it; and sending the first updated domain name information to the second datastore if the first datastore is not available to receive it.
 15. The method for synchronizing a dynamic DNS of claim 14 further comprising: if the second datastore receives the first updated domain name information from the first DHCP server, then determining when the first datastore is available to receive the first updated domain name information; and sending the first updated domain name information to the first datastore when the first datastore is available to receive it.
 16. The method for synchronizing a dynamic DNS of claim 10 further comprising: at a second DHCP server, creating the second updated domain name information; sending the second updated domain name information to the second datastore if the second datastore is available to receive it; and sending the second updated domain name information to the first datastore if the second datastore is not available to receive it.
 17. The method for synchronizing a dynamic DNS of claim 16 further comprising: if the first datastore receives the second updated domain name information from the second DHCP server, then determining when the second datastore is available to receive the second updated domain name information; and sending the second updated domain name information to the second datastore when the second datastore is available to receive it.
 18. The method for synchronizing a dynamic DNS of claim 10 further comprising: sending a request for domain name information from a DNS client; and at the selected DNS master server, sending the response to the DNS client. 